package com.haixiaoke.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.haixiaoke.common.annotation.Excel;
import com.haixiaoke.common.core.domain.BaseEntity;
import com.haixiaoke.vo.YltAuthVo;
import lombok.Data;

import java.util.Date;

/**
 * 智能锁设备对象 biz_smart_lock
 *
 * @author xiaolong
 * @date 2023-05-25
 */
@Data
public class SmartLock extends BaseEntity {
    private static final long serialVersionUID = 1L;

    //卡类型：0CPU卡(普通门卡) 1身份证
    public static final Integer IDENTITY_CARD_TYPE = 1; //身份证
    public static final Integer CPU_CARD_TYPE = 0; //CPU卡

    //智能锁品牌
    public static final long THIRD_GENERATION_SMART_LOCK = 1L; //三代智能锁
    public static final long FOUR_GENERATION_SMART_LOCK = 2L; //四代智能锁
    public static final long SIX_GENERATION_SMART_LOCK = 3L; //六代智能锁

    /**
     * 五代锁
     */
    public static final long FIVE_GENERATION_SMART_LOCK = 4L;

    /**
     * 七代锁
     */
    public static final long SEVEN_GENERATION_SMART_LOCK = 5L;

    //对接平台类型 0：中国电信；1：中国移动
    public static final Integer BUTT_PLATFORM_TYPE_TELECOM = 0; //中国电信；
    public static final Integer BUTT_PLATFORM_TYPE_MOBILE = 1; //中国移动；

    //	密码类型（1:指纹:2:密码;3:卡;11:人脸）
    public static final Integer PASSWORD_TYPE_FINGERPRINT = 1; //指纹
    public static final Integer PASSWORD_TYPE_NUMBER = 2; //密码
    public static final Integer PASSWORD_TYPE_CARD = 3; //门卡
    public static final Integer PASSWORD_TYPE_FACE = 11; //人脸

    //	永久标记（1：永久密码；2：临时密码）
    public static final Integer PERMANENT_FLAG_YES = 1; //永久密码
    public static final Integer PERMANENT_FLAG_NO = 2; //临时密码

    //密码权限(1:管理员 2:普通用户)
    public static final Integer PASSWORD_AUTH_TYPE_ADMIN = 1; //管理员
    public static final Integer PASSWORD_AUTH_TYPE_GENERAL = 2; //普通用户

    /**
     * 智能锁设备id
     */
    private Long lockId;


    /**
     * 型号id
     */
    private Integer modelId;


    @Excel(name = "产品型号")
    private String modelName;

    /**
     * 智能锁MAC
     */
    @Excel(name = "智能锁MAC")
    private String mac;

    /**
     * 智能锁唯一标识
     */
    @Excel(name = "智能锁SN")
    private String sn;

    /**
     * 智能锁名称
     */
    @Excel(name = "智能锁名称")
    private String lockName;

    /**
     * 通讯方式
     */
    @Excel(name = "通讯方式", dictType = "dict_communication")
    private Long communMode;

    /**
     * 运营商
     */
    @Excel(name = "运营商", dictType = "dict_operator")
    private Long operator;

    /**
     * 品牌id
     */
    private Long brandId;

    /**
     * 品牌名称
     */
    @Excel(name = "品牌名称")
    private String brandName;

    /**
     * 绑定状态(0:
     */
    @Excel(name = "绑定状态", dictType = "dict_binding")
    private Integer bindingStatus;

    /**
     * 语音播放状态(0:
     */
    @Excel(name = "语音播放状态", dictType = "dict_voice")
    private Integer voiceStatus;

    /**
     * 门锁状态, 0:关闭,1:打开,-1:异常
     */
    @Excel(name = "门锁状态", dictType = "dict_lock_status")
    private Integer lockStatus;

    /**
     * 信号强度
     */
    @Excel(name = "信号强度")
    private Integer signalStrength;

    /**
     * 锁的连接状态, 0:离线,1:在线
     */
    @Excel(name = "连接状态", dictType = "dict_conn_status")
    private Integer connStatus;

    /**
     * 电池电量
     */
    private Integer battery;

    /**
     * MAC地址
     */
    @Excel(name = "蓝牙MAC")
    private String bluetoothMac;

    /**
     * IMEI号
     */
    @Excel(name = "IMEI号")
    private String imei;

    /**
     * 软件版本号
     */
    @Excel(name = "软件版本号")
    private String fwVersion;

    /**
     * 生成离线密码的有效时间（单位分钟）
     */
    private Integer passTime;

    /**
     * 用户标识
     */
    private String identification;

    /**
     * 慧享佳授权ID
     */
    private String keyId;

    /**
     * 智能锁对应标识
     */
    private String lockIdentifier;

    /**
     * 授权开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 授权结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 指纹数据
     */
    private String fingerprint;

    /**
     * 密码值
     */
    private String password;

    /**
     * 卡类型：0CPU卡(普通门卡) 1身份证
     */
    private Integer cardType;

    /**
     * 门卡卡号（芯片的16进制编号）
     */
    private String cardNumber;

    /**
     * 删除标识 1单个删除 2删除所有
     */
    private Integer delAuthState;

    /**
     * 亚略特授权信息
     */
    private YltAuthVo yltAuthVo;

    /**
     * 厂商密码授权id
     */
    private Long returnPwdId;

    /**
     * 人脸照url地址
     */
    private String faceImage;

    /**
     * 厂商人脸授权id
     */
    private Long returnFaceId;

    /**
     * 厂商人脸授权id
     */
    private Long returnCardId;

    /**
     * 密码类型：1永久密码 2临时密码
     */
    private Integer passwordType;

    /**
     * 当前页数
     */
    private Integer pageNum;

    /**
     * 页数大小
     */
    private Integer pageSize;

    /**
     * 用户角色:0普通用户,1管理员，2保洁
     */
    private String userRole;

    /**
     * 用户名字
     */
    private String userName;

    /**
     * 电话号码
     */
    private String mobile;

    /**
     * 密钥
     */
    private String secretKey;

    /**
     * 是否删除所有用户：true删除所有，false删除普通用户
     */
    private Boolean deleteUserFlag;
}
